package com.durian.affairs.api.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.durian.common.core.annotation.Excel;
import com.durian.common.core.web.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 收款计划对象 t_cw_receipt_plan
 * 
 * @author durian
 * @date 2022-06-25
 */
@Data
public class CwReceiptPlan extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 收款单号 */
    @Excel(name = "收款单号")
    private String receiptOrderNo;

    /** 商户ID */
    @Excel(name = "商户ID")
    private Long businessId;

    /** 合同ID */
    @Excel(name = "合同ID")
    private Long contractId;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractNo;

    /** 合同类型
,"1：收房合同，
2：出房合同" */
    @Excel(name = "合同类型 ,1：收房合同，2：出房合同")
    private Integer contractType;

    /** 解约协议ID（解约时才有，收房是收房解约协议，出房是出房解约协议） */
    @Excel(name = "解约协议ID", readConverterExp = "解=约时才有，收房是收房解约协议，出房是出房解约协议")
    private Long tTerminationId;

    /** 楼盘ID */
    @Excel(name = "楼盘ID")
    private Long premiseId;

    /** 小区(使用楼盘名) */
    @Excel(name = "小区(使用楼盘名)")
    private String premiseName;

    /** 房源ID */
    @Excel(name = "房源ID")
    private String roomId;

    /** 房源编号 */
    @Excel(name = "房源编号")
    private String roomCode;

    /** 承租房间(使用房源名称) */
    @Excel(name = "承租房间(使用房源名称)")
    private String roomName;

    /** 业主ID */
    @Excel(name = "业主ID")
    private Long ownerId;

    /** 业主姓名 */
    @Excel(name = "业主姓名")
    private String ownerName;

    /** 租客ID */
    @Excel(name = "租客ID")
    private Long tenantId;

    /** 租客姓名(面向业主收款时，为空) */
    @Excel(name = "租客姓名(面向业主收款时，为空)")
    private String tenantName;

    /** 收款类型
,1:房租收款 2：租务收款 3：解约结算收款 4：续约结算收款 */
    @Excel(name = "收款类型 ,1:房租收款 2：租务收款 3：解约结算收款 4：续约结算收款")
    private Integer receiptType;

    /** 收款状态
1:未收款 2：已收款 3：已中止  4：已冻结（未收款的时候，才会变成已冻结，所以恢复冻结状态的时候，是恢复成未收款状态） */
    @Excel(name = "收款状态 1:未收款 2：已收款 3：已中止  4：已冻结", readConverterExp = "未=收款的时候，才会变成已冻结，所以恢复冻结状态的时候，是恢复成未收款状态")
    private Integer skStatus;

    /** 账单类型（金融属性）,"1：分期变更
 2：租约保理变更
 3：退租变更
 4：普通账单(正常房租租务计划)"
参照枚举CollectionPlanZdType */
    @Excel(name = "账单类型", readConverterExp = "金=融属性")
    private Integer billType;

    /** 款项（费用类型）
,1:水费 2：电费，3：煤/燃气费，80：租金，81：押金，90：解约结算，99:其它 */
    @Excel(name = "款项", readConverterExp = "费=用类型")
    private Integer itemType;

    /** 其它款项
,款项为其它的时候，输入 */
    @Excel(name = "其它款项 ,款项为其它的时候，输入")
    private String otherItemName;

    /** 支付金额（应收金额，房租时=不含税净价+税费） */
    @Excel(name = "支付金额", readConverterExp = "应=收金额，房租时=不含税净价+税费")
    private BigDecimal paymentAmount;

    /** 实收金额 */
    @Excel(name = "实收金额")
    private BigDecimal realPaymentAmount;

    /** 选择账期（跟随的第几期房租对应的收款计划ID）,跟随一起付款的时候，应付日期选择设置为同一天 */
    @Excel(name = "选择账期", readConverterExp = "跟=随的第几期房租对应的收款计划ID")
    private Long withReceiptPlanId;

    /** 账期开始日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账期开始日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDaysBegin;

    /** 账期截止日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账期截止日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDaysEnd;

    /** 预定收款日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预定收款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date collectionDate;

    /** 实际收款日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际收款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date realCollectionDate;

    /** 第几期（房租收款的时候） */
    @Excel(name = "第几期", readConverterExp = "房=租收款的时候")
    private Integer receiptNumber;

    /** 线下支付方式（直接录入已收款的收款计划时选择的）
,1:快捷同，2：支付宝，3：微信，4：现金，5：银行卡转账，6：POS机刷卡，99：其它 */
    @Excel(name = "线下支付方式", readConverterExp = "直=接录入已收款的收款计划时选择的")
    private Integer payMethod;

    /** 其它支付方式
,支付方式为其它的时候，输入 */
    @Excel(name = "其它支付方式 ,支付方式为其它的时候，输入")
    private String otherPayMethod;

    /** 支付流水号（线下直接录入收款的时候输入，不是线上的流水号） */
    @Excel(name = "支付流水号", readConverterExp = "线=下直接录入收款的时候输入，不是线上的流水号")
    private String payFlowNo;

    /** 账期房租金额（净价，不含税） */
    @Excel(name = "账期房租金额", readConverterExp = "净=价，不含税")
    private BigDecimal rentalPrice;

    /** 税费 */
    @Excel(name = "税费")
    private BigDecimal tax;

    /** 操作人 */
    @Excel(name = "操作人")
    private String operationUser;

    /** 预留字段1 */
    @Excel(name = "预留字段1")
    private BigDecimal reserve1;

    /** 预留字段2 */
    @Excel(name = "预留字段2")
    private Long reserve2;

    /** 预留字段3 */
    @Excel(name = "预留字段3")
    private String reserve3;

    /** 预留字段4 */
    @Excel(name = "预留字段4")
    private String reserve4;

    /** 预留字段5 */
    @Excel(name = "预留字段5")
    private String reserve5;

    /** 删除标识
,0:未删除，1：删除 */
    @Excel(name = "删除标识 ,0:未删除，1：删除")
    private Integer delFlg;

    /** 创建用户ID */
    @Excel(name = "创建用户ID")
    private Long createUserid;

    /** 更新用户ID */
    @Excel(name = "更新用户ID")
    private Long updateUserid;
    /** 应收开始日期*/
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date beginCollectionDate;
    /** 应收结束日期*/
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endCollectionDate;
    /** 实收开始日期*/
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date beginRealCollectionDate;
    /** 实收结束日期*/
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endRealCollectionDate;

    /**控制收入/支出*/
    private Integer operationTypeDefault;

}
